var express = require('express');
var router = express.Router();

var UserToken = require('../db/user_tokens.js');
var categoryDao = require('../dao/category.js');
var categoryRoutes = module.exports;

/**
 * 添加类别或编辑类别
 * @param  token
 * @param  name
 * @param  id  (编辑需要传入)
 *         url/category/save
 */
categoryRoutes.save = function(req, res){
    var par = req.body;
    if(!par.token) return res.json(new ERR('token不为空！', 400));
    if(!par.name) return res.json(new ERR('类别名不为空！', 400));
    UserToken.checkAllLogin(par.token, null, function (err, errCode, userInfo) {
        if (err) {
            return res.json(new ERR(err, 400));
        }
        if(!userInfo.isAdmin)  return res.json('无权限', 400);
        categoryDao.save(par, function(err, data){
            if(err) {
                res.json(new ERR(err, 400));
            } else {
                res.json(new PKG(data));
            }
        });
    });
}
router.post('/save', categoryRoutes.save);

/**
 * 删除类别
 * @param  token
 * @param  id
 *         url/category/delete
 */
categoryRoutes.delete = function(req, res){
    var par = req.body;
    if(!par.token) return res.json(new ERR('token不为空！', 400));
    if(!par.id) return res.json(new ERR('id不为空！', 400));
    UserToken.checkAllLogin(par.token, null, function (err, errCode, userInfo) {
        if (err) {
            return res.json(new ERR(err, 400));
        }
        if(!userInfo.isAdmin)  return res.json('无权限', 400);
        categoryDao.delete(par, function(err, data){
            if(err) {
                res.json(new ERR(err, 400));
            } else {
                res.json(new PKG(data));
            }
        });
    });
}
router.post('/delete', categoryRoutes.delete);

/**
 * 类别列表
 * @param  token
 * @param  size
 * @param  page
 *         url/category/list
 */
categoryRoutes.list = function(req, res){
    var par = req.body;
    if(!par.token) return res.json(new ERR('token不为空！', 400));
    UserToken.checkAllLogin(par.token, null, function (err, errCode, userInfo) {
        if (err) {
            return res.json(new ERR(err, 400));
        }
        if(!par.size) par.size = 10;
        par.size = parseInt(par.size);
        if(!par.page) {
            par.start = 0;
        } else {
            par.start = (parseInt(par.page) - 1) * parseInt(par.size);
        }
        if(!userInfo.isAdmin)  return res.json('无权限', 400);
        categoryDao.list(par, function(err, data){
            if(err) {
                res.json(new ERR(err, 400));
            } else {
                res.json(new PKG(data));
            }
        });
    });
}
router.post('/list', categoryRoutes.list);

module.exports = router;